package Pre.Exam;

import java.util.HashSet;
import java.util.Set;

public class Exam03 {
    public static void main(String[] args) {
        //给你一个整数数组 `nums` 和一个整数 `k` ，判断数组中是否存在两个 **不同的索引** `i` 和 `j` ，
        // 满足 `nums[i] == nums[j]` 且 `abs(i - j) <= k` 。如果存在，返回 `true` ；否则，返回 `false` 。
        int[] nums = {1,0,1,1};
        int k = 1;
        System.out.println(exam1(nums, k));


    }
    public static boolean  exam( int[] num , int k){
        for (int i = 0; i < num.length ; i++) {
            for (int j = 1; j < num.length ; j ++) {
                if (num[i] == num[j] && Math.abs(i - j) <= k){
                    return true;
                }
            }
        }
        return false;
    }
    public static boolean exam1(int[] nums, int k){
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length ; i++) {
            if (!set.contains(nums[i])){
                return true;
            }
            set.add(nums[i]);
            if (set.size() > k){
                set.remove(nums[i - k]);
            }
        }
        return false;
    }
}
